/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package freya.bean;

import freya.dao.EventoDAO;
import freya.model.Evento;
import freya.model.EventoId;
import freya.model.Sala;
import freya.model.Usuario;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Random;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

/**
 *
 * @author Danilo Rodrigues
 */
public class EventoBean {
    
    private TableBean tableBean = new TableBean();
    private UsuarioBean usuarioBean = new UsuarioBean();
    
    private EventoId id;
    private Usuario usuario;
    private Sala sala;
    private String dataInicial;
    private String dataFinal;
    private String horaInicial;
    private String horaFinal;
    private String finalidade;
    private String descricao;
    private String tipo;
    private Date data1 = new Date();
    private Date data2 = new Date();

    public EventoBean(){
        
    }

    public EventoBean(EventoId id, Usuario usuario, Sala sala, String dataInicial, String dataFinal, String horaInicial, String horaFinal, String finalidade) {
        this.id = id;
        this.usuario = usuario;
        this.sala = sala;
        this.dataInicial = dataInicial;
        this.dataFinal = dataFinal;
        this.horaInicial = horaInicial;
        this.horaFinal = horaFinal;
        this.finalidade = finalidade;
    }

    public UsuarioBean getUsuarioBean() {
        return usuarioBean;
    }

    public void setUsuarioBean(UsuarioBean usuarioBean) {
        this.usuarioBean = usuarioBean;
    }

    public TableBean getTableBean() {
        return tableBean;
    }

    public void setTableBean(TableBean tableBean) {
        this.tableBean = tableBean;
    }

    public Date getData1() {
        return data1;
    }

    public void setData1(Date data1) {
        this.data1 = data1;
    }

    public Date getData2() {
        return data2;
    }

    public void setData2(Date data2) {
        this.data2 = data2;
    }

    public String getDataFinal() {
        return dataFinal;
    }

    public void setDataFinal(String dataFinal) {
        this.dataFinal = dataFinal;
    }

    public String getDataInicial() {
        return dataInicial;
    }

    public void setDataInicial(String dataInicial) {
        this.dataInicial = dataInicial;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public String getFinalidade() {
        return finalidade;
    }

    public void setFinalidade(String finalidade) {
        this.finalidade = finalidade;
    }

    public String getHoraFinal() {
        return horaFinal;
    }

    public void setHoraFinal(String horaFinal) {
        this.horaFinal = horaFinal;
    }

    public String getHoraInicial() {
        return horaInicial;
    }

    public void setHoraInicial(String horaInicial) {
        this.horaInicial = horaInicial;
    }

    public EventoId getId() {
        return id;
    }

    public void setId(EventoId id) {
        this.id = id;
    }

    public Sala getSala() {
        return sala;
    }

    public void setSala(Sala sala) {
        this.sala = sala;
    }

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }
    
    
    
    public void Insert(){
        
            Calendar calendario = new GregorianCalendar();

            calendario.setTime(data1);
            dataInicial = Integer.toString(calendario.get(GregorianCalendar.YEAR));
            dataInicial += "-";
            dataInicial += Integer.toString(calendario.get(GregorianCalendar.MONTH) + 1);
            dataInicial += "-";
            dataInicial += String.valueOf(calendario.get(GregorianCalendar.DAY_OF_MONTH));

            calendario.setTime(data2);
            dataFinal = Integer.toString(calendario.get(GregorianCalendar.YEAR));
            dataFinal+= "-";
            dataFinal += Integer.toString(calendario.get(GregorianCalendar.MONTH) + 1);
            dataFinal += "-";
            dataFinal += String.valueOf(calendario.get(GregorianCalendar.DAY_OF_MONTH));

            Evento e = new Evento();
            
            e.setSala(tableBean.getSelectedSala());
            e.setUsuario(usuarioBean.getUsuario(usuarioBean.getMatricula()));

            EventoId identificador = new EventoId();
            
            if(e.getSala() == null || e.getUsuario() == null)
            {
                return;
            }
            else
            {
                e.setId(identificador);

                identificador.setCodigo(new Random().nextInt());
                identificador.setCodigo(e.getSala().getCodigo());
                identificador.setMatricula(e.getUsuario().getMatricula());

                e.setDataInicial(dataInicial);
                e.setDataFinal(dataFinal);
                e.setHoraInicial(horaInicial);
                e.setHoraFinal(horaFinal);
                e.setFinalidade(finalidade);

                new EventoDAO().Insert(e);
            }
    }
    
    
    public void Mensagem()
    {
         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Evento Cadastrado com sucesso", "Mensagem"));
    }
}
